const fs = require('fs')
const vm = require('vm')

let content = fs.readFileSync('test.txt', 'utf-8')

// console.log(content)
// // var age = 18

// // 使用eval运行，可能会有变量名冲突的问题
// eval(content)
// console.log(age)
// // 18

// // 使用new Function，在参数多的时候，使用方式繁琐
// let age = 33
// let fn = new Function('age','return age+1')
// console.log(fn(age))
// // 34

// 使用vm，使用vm运行能避免命名冲突
// let age = 33
vm.runInThisContext(content)
console.log(age)
// 33
// 18

// 总结，使用vm运行代码，代码运行环境是一个单独的模块域，相当于指向当前代码域的prototype
